#ifndef LASERPARAMINFO_H
#define LASERPARAMINFO_H

#include "jsonconvert.h"
#include "laserparams.h"

class LaserParamInfo : public JsonConvert
{
public:
    LaserParamInfo()
        : mLaserParamsType(Global), mLaserId(0), mLaserParamsCount(1)
    {}

    // 获取和设置激光参数集类型
    ParamsType laserParamsType() const { return mLaserParamsType; }
    void setLaserParamsType(ParamsType type) { mLaserParamsType = type; }

    // 获取和设置激光参数ID
    int laserId() const { return mLaserId; }
    void setLaserId(int id) { mLaserId = id; }

    // 获取和设置当前激光参数
    LaserParams& laserParams() { return mLaserParams; }
    void setLaserParams(LaserParams lp) { mLaserParams = lp ; }

    // 获取和设置当前激光参数执行次数
    int laserParamsCount() const { return mLaserParamsCount; }
    void setLaserParamsCount(int count) { mLaserParamsCount = count; }

    // JSON序列化
    QJsonObject toJsonObj() const override
    {
        QJsonObject obj;
        obj["mLaserParamsType"] = static_cast<int>(mLaserParamsType);
        obj["mLaserId"] = mLaserId;
        obj["mLaserParams"] = mLaserParams.toJsonObj(); // 假设LaserParams类有toJsonObj方法
        obj["mLaserParamsCount"] = mLaserParamsCount;
        return obj;
    }

    // JSON反序列化
    void fromJsonObj(const QJsonObject& obj) override
    {
        mLaserParamsType = static_cast<ParamsType>(obj["mLaserParamsType"].toInt());
        mLaserId = obj["mLaserId"].toInt();
        mLaserParams.fromJsonObj(obj["mLaserParams"].toObject()); // 假设LaserParams类有fromJsonObj方法
        mLaserParamsCount = obj["mLaserParamsCount"].toInt();
    }

private:
    /**
     * @brief mLaserParamsType 激光参数集类型
     */
    ParamsType mLaserParamsType = Global;
    /**
     * @brief mLaserId 激光参数ID,全局和本地的时候使用
     */
    int mLaserId = 0;
    /**
     * @brief mLaserParams 当前激光参数,个体单独设置的时候使用
     */
    LaserParams mLaserParams;
    /**
     * @brief mLaserParamsCount 当前激光参数执行次数
     */
    int mLaserParamsCount = 1;
};

#endif // LASERPARAMINFO_H
